/***
 *  在线笔试 - ( 能多快就多快 )
 *  面对面笔试 - ( 既要追求性能 也要追求 技巧 )
 */

/***
 * 正常的 排序
 *
 * var arr = [3,2,1,4,5,6,7,0];
 *
 * console.log(arr.sort());
 *
 */


// 数组乱序


/**
 * !【1】这种算法，适合 面对面笔试 （会的题 解法 先抛个 简单的 ， 防止 撞不会的车 ）
 *
 * (1)随便查个数扔里边
 *
 * (2)还不能重复
 */

/**
 *  +-----------------------------
 *               思路
 *  -----------------------------+
 */

// var arr = [1,2,3,4,5,6,7,8,9];
//
// var newArr = [];

// var num = Math.floor(Math.random() * arr.length);//(1) 随便查个数

// console.log(num);

// newArr.push(arr[num]);// (1) 查完 扔新数组里

// arr.splice(num,1)   //(2) 不能重复 给 新数组 添完 就删


// 把 上面 3行 代码 多循环几圈

// while(arr.length > 0){
//
//     var num = Math.floor(Math.random() * arr.length);//(1) 随便查个数
//
//     newArr.push(arr[num]);// (1) 查完 扔新数组里
//
//     arr.splice(num,1)   //(2) 不能重复 给 新数组 添完 就删
//
// }

// console.log(arr); // 全没了
// console.log(newArr);
/**
 *  +-----------------------------
 *               完整代码
 *  -----------------------------+
 */

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

var newArr = [];

while (arr.length > 0) {

    var num = Math.floor(Math.random() * arr.length);

    newArr.push(arr[num]);

    arr.splice(num, 1);

}

console.log(newArr);


/**
 * !【2】 sort（） 法
 *
 */

// var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

// arr.sort(function(){

//     return Math.random() > 0.5 ? 1 : -1;
    /**
     * - Math.random() 取值范围 0 ~ 1 ; 包含小数
     *
     * - 一半 交换
     *
     * - 一半 不交换
     */

    /**
     *  - sort()
     *
     *   - 在 原数组上 对 元素 进行排序 （ 排序时 不用 创建 新的数组 副本 ）
     *
     *   - 如果调用时 没有参数 ， 默认  按照 字符编码 顺序
     *
     *   - （如果有必要） 将数组元素 都转换成 字符串
     *
     */

    // return Math.random() - 0.5;

    /**
     * - 随机数 - 0.5
     *
     *  - 如果这个随机数 大于 0.5  那么 return 出去的 是个 正数
     *
     *  - 如果这个随机数 小于 0.5  那么 return 出去的 是个 负数
     *
     */
// })

// console.log(arr);

// var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

// arr.sort(function(a , b){

//     // return a - b; // 正序

//     // return b - a; // 倒序

//     /**
//      *
//      *  - 正序/倒序
//      *
//      *  - a - b > 0  不交换
//      *
//      *  - a - b < 0  交换
//      *
//      */

// })

// console.log(arr);
